#include "bsp_led.h"

/**
 *  @brief  :初始化LED对应的GPIO
 *  @param  :无
 *  @retval :无
 */
void led_init(void)
{
    // #define IOMUXC_GPIO1_IO03_GPIO1_IO03                         0x020E0068U, 0x5U, 0x00000000U, 0x0U, 0x020E02F4U
    /*1.初始化IO复用*/
    IOMUXC_SetPinMux(IOMUXC_GPIO1_IO03_GPIO1_IO03,0);        //这个具体是如何实现的还不知道

    /**2.  配置GPIO1_IO03的IO属性
     *   bit 16:  0 HYS 关闭   其实就是是否使能施密特触发器
     *   bit [15:14]:00  默认下拉
     *   bit [13] : 0 kepper功能          为0时使用状态保持器  为1时使用上下拉
     *   bit [12] : 1 pull/keeper使能     为0时禁止上下拉/状态保持  为1时使能上下拉和状态保持器
     *   bit [11] : 0 关闭开路输出
     *   bit [7:6] :10  速度100Mhz
     *   bit [5:3] :110 R0/6驱动能力
     *   bit [0]   : 0 低压摆率
     */
    IOMUXC_SetPinConfig(IOMUXC_GPIO1_IO03_GPIO1_IO03,0x10B0);

    /*3.初始化GPIO,设置GPIO1_IO03设置为输出*/
    GPIO1->GDIR |= (1<<3);

    /*4.设置GPIO1_IO03输出低电平,打开LED0*/
    GPIO1->DR &= ~(1<<3);
}

/**
 *  @brief  :LED灯控制函数,控制LED灯打开还是关闭
 *  @param  :led 要控制的LED灯编号
 *  @param  :status 0 关闭LED0 , 1 打开LED0
 *  @retval :无
 */
void led_switch(int led,int status)
{
    switch (led)
    {   //LED0  就是宏定义
        case LED0:
            if(status == ON) 
            {
                GPIO1->DR &= ~(1<<3);   //打开LED灯
            }
            else if(status == OFF)
            {
                GPIO1->DR |= (1<<3);    //关闭LED灯
            }
            break;
        default:
            break;
    }
}
